<?php
	final class MyTools extends MyDebuger implements MyData {
		/* version de la clase */
		private static $version			= 0;
		/* subversion de la clase */
		private static $subversion		= 2;
		/* numero de revision de la clase */
		private static $revision		= 4;
		/* autor de la clase */
		private static $author			= 'Hermann D. Schimpf';
		/* email de contacto con el autor */
		private static $authorAddress	= 'hschimpf@gschimpf.com';

		public final function __construct($debug = False, $name = __CLASS__) {
			/* creamos el padre */
			parent::__construct($debug, $name);
			/* habilitamos el registro en un fichero */
			$this->enableLog($name . '.log');
		}

		public function __destruct() {
			/* matamos el padre */
			parent::__destruct();
		}

		public static final function getVersion() {
			/* retornamos la version actual de la clase */
			return 'v' . self::$version . '.' . self::$subversion . '.' . self::$revision;
		}

		public static final function showDefinitionOf($classOrInterface = Null, $showPrivates = False) {
			try {
				try {
					/* creamos la instancia */
					$showDefinitionOf = new MyTools;
					/* mostramos un mensaje */
					$showDefinitionOf->show('Verificando existencia de la clase ' . $showDefinitionOf->italic('MyClassDefinitor') . '..', False);
					/* verificamos si existe la clase */
					if (!class_exists('MyClassDefinitor'))
						/* salimos con una excepcion */
						$showDefinitionOf->newException('La clase' . $showDefinitionOf->italic('MyClassDefinitor') . ' no existe');
					/* mostramos ok al mensaje */
					$showDefinitionOf->showOK();
					/* retornamos el resultado del metodo */
					return MyClassDefinitor::showDefinitionOf($classOrInterface, $showPrivates);
				} catch (Exception $e) {
					/* capturamos todos los errores y los transformamos en mi excepcion */
					$showDefinitionOf->convertToMyException($e);
				}
			} catch (MyException $e) {
				/* si se produjo una excepcion la manejamos con el metodo 'show' */
				$showDefinitionOf->show($e->getMensaje());
			}
		}

		public static final function validateUrl($url = Null) {
			try {
				try {
					/* creamos la instancia */
					$validateUrl = new MyTools;
					/* mostramos un mensaje */
					$validateUrl->show('Verificando existencia de la clase ' . $validateUrl->italic('MyUrlValidator') . '..', False);
					/* verificamos si existe la clase */
					if (!class_exists('MyUrlValidator'))
						/* salimos con una excepcion */
						$validateUrl->newException('La clase' . $validateUrl->italic('MyUrlValidator') . ' no existe');
					/* mostramos ok al mensaje */
					$validateUrl->showOK();
					/* retornamos el resultado del metodo */
					return MyUrlValidator::validateUrl($url);
				} catch (Exception $e) {
					/* capturamos todos los errores y los transformamos en mi excepcion */
					$validateUrl->convertToMyException($e);
				}
			} catch (MyException $e) {
				/* si se produjo una excepcion la manejamos con el metodo 'show' */
				$validateUrl->show($e->getMensaje());
			}
		}

		public static final function validateEmail($email = Null) {
			try {
				try {
					/* creamos la instancia */
					$validateEmail = new MyTools;
					/* mostramos un mensaje */
					$validateEmail->show('Verificando existencia de la clase ' . $validateEmail->italic('MyEmailValidator') . '..', False);
					/* verificamos si existe la clase */
					if (!class_exists('MyEmailValidator'))
						/* salimos con una excepcion */
						$validateEmail->newException('La clase' . $validateEmail->italic('MyEmailValidator') . ' no existe');
					/* mostramos ok al mensaje */
					$validateEmail->showOK();
					/* retornamos el resultado del metodo */
					return MyEmailValidator::validateEmail($email);
				} catch (Exception $e) {
					/* capturamos todos los errores y los transformamos en mi excepcion */
					$validateEmail->convertToMyException($e);
				}
			} catch (MyException $e) {
				/* si se produjo una excepcion la manejamos con el metodo 'show' */
				$validateEmail->show($e->getMensaje());
			}
		}

		public static final function convertToWords($number = Null) {
			try {
				try {
					/* creamos la instancia */
					$convertToWrods = new MyTools;
					/* mostramos un mensaje */
					$convertToWrods->show('Verificando existencia de la clase ' . $convertToWrods->italic('MyNumberConverter') . '..', False);
					/* verificamos si existe la clase */
					if (!class_exists('MyNumberConverter'))
						/* salimos con una excepcion */
						$convertToWrods->newException('La clase' . $convertToWrods->italic('MyNumberConverter') . ' no existe');
					/* mostramos ok al mensaje */
					$convertToWrods->showOK();
					/* retornamos el resultado del metodo */
					return MyNumberConverter::convertToWords($number);
				} catch (Exception $e) {
					/* capturamos todos los errores y los transformamos en mi excepcion */
					$convertToWrods->convertToMyException($e);
				}
			} catch (MyException $e) {
				/* si se produjo una excepcion la manejamos con el metodo 'show' */
				$convertToWrods->show($e->getMensaje());
			}
		}

		public static final function validateUserName($userName = Null) {
			try {
				try {
					/* creamos la instancia */
					$validateUserName = new MyTools;
					/* mostramos un mensaje */
					$validateUserName->show('Verificando existencia de la clase ' . $validateUserName->italic('MyUserNameValidator') . '..', False);
					/* verificamos si existe la clase */
					if (!class_exists('MyUserNameValidator'))
						/* salimos con una excepcion */
						$validateUserName->newException('La clase' . $validateUserName->italic('MyUserNameValidator') . ' no existe');
					/* mostramos ok al mensaje */
					$validateUserName->showOK();
					/* retornamos el resultado del metodo */
					return MyUserNameValidator::validateUserName($userName);
				} catch (Exception $e) {
					/* capturamos todos los errores y los transformamos en mi excepcion */
					$validateUserName->convertToMyException($e);
				}
			} catch (MyException $e) {
				/* si se produjo una excepcion la manejamos con el metodo 'show' */
				$validateUserName->show($e->getMensaje());
			}
		}

		public static final function validateIp($ipDir = Null) {
			try {
				try {
					/* creamos la instancia */
					$validateIp = new MyTools;
					/* mostramos un mensaje */
					$validateIp->show('Verificando existencia de la clase ' . $validateIp->italic('MyIpValidator') . '..', False);
					/* verificamos si existe la clase */
					if (!class_exists('MyIpValidator'))
						/* salimos con una excepcion */
						$validateIp->newException('La clase' . $validateIp->italic('MyIpValidator') . ' no existe');
					/* mostramos ok al mensaje */
					$validateIp->showOK();
					/* retornamos el resultado del metodo */
					return MyIpValidator::validateIp($ipDir);
				} catch (Exception $e) {
					/* capturamos todos los errores y los transformamos en mi excepcion */
					$validateIp->convertToMyException($e);
				}
			} catch (MyException $e) {
				/* si se produjo una excepcion la manejamos con el metodo 'show' */
				$validateIp->show($e->getMensaje());
			}
		}

		public static final function replaceBBCode($string = Null) {
			try {
				try {
					/* creamos la instancia */
					$replaceBBCode = new MyTools;
					/* mostramos un mensaje */
					$replaceBBCode->show('Verificando existencia de la clase ' . $replaceBBCode->italic('MyBBCodeGenerator') . '..', False);
					/* verificamos si existe la clase */
					if (!class_exists('MyBBCodeGenerator'))
						/* salimos con una excepcion */
						$replaceBBCode->newException('La clase' . $replaceBBCode->italic('MyBBCodeGenerator') . ' no existe');
					/* mostramos ok al mensaje */
					$replaceBBCode->showOK();
					/* retornamos el resultado del metodo */
					return MyBBCodeGenerator::replaceBBCode($string);
				} catch (Exception $e) {
					/* capturamos todos los errores y los transformamos en mi excepcion */
					$replaceBBCode->convertToMyException($e);
				}
			} catch (MyException $e) {
				/* si se produjo una excepcion la manejamos con el metodo 'show' */
				$replaceBBCode->show($e->getMensaje());
			}
		}
	}
?>